Generally described, computing devices utilize a communication network, or a series of communication networks, to exchange data. Companies and organizations operate computer networks that interconnect a number of computing devices to support operations or provide services to third parties. In some instances, computing devices may be configured to provide data storage services, enabling users to store information remotely on the data storage service. Such data storage services may reduce a need for users to maintain their own storage, or may enable off-site data storage.
In general, each user of a data storage service may be provided with a remotely accessible data store configured to store desired information. In order to reduce costs associated with data storage services, these data stores may be implemented as virtual data stores hosted on a physical data store. For example, a physical computing device having a one terabyte hard disk drive (HDD) may host multiple, distinct one hundred gigabyte drives, each accessible to a different user. Virtualization may therefore reduce the number of physical data storage devices needed to support a large number of users, thereby reducing costs and increasing availability of data storage services.
In some instances, virtualized data stores (such as those offered by data storage services) may be configured such that the virtual data store appears to have a larger storage capacity than is actually allocated. Such a configuration is sometimes referred to as “thin provisioning.” Generally, the larger storage capacity of a thin provisioned virtual data store corresponds to a capacity agreed upon by the data storage service and a user (e.g., as defined in a service contract). However, the actual storage capacity allocated to a thin provisioned virtual data store by a data storage service is generally related to the amount of data stored within the virtual data store. For example, assume that a thin provisioned virtual data store has an agreed upon larger storage capacity of 10 gigabytes. Further, assume that the user (or set of users) that is associated with the virtual data store has only stored only 1 gigabyte of information. Under these conditions, a data storage service may allocate 1 gigabyte or just over 1 gigabyte of storage on an underlying physical storage device. As a user transmits additional data to the virtual data store, the allocated size of the virtual data store may be increased. For example, if an additional 1 gigabyte of information is transmitted for storage, the virtual data store may be allocated an additional gigabyte, such that total allocation would equal at least 2 gigabytes. However, from the perspective of the user (or set of users) the apparent capacity would remain at 10 gigabytes of storage. By utilizing thin provisioning, data storage services may reduce the total physical data stores required to support users.